package com.xzy.demo.spike;

import com.xzy.demo.common.msg.Message;

/**
 * @author xzy
 * @date 2021/8/22 20:02
 * 说明：商品秒杀
 */
public interface SpikeService {

    /**
     * 初始化秒杀商品信息
     *
     * @param commodityId - 商品ID
     * @param quantity    - 秒杀数量
     * @return - 操作结果
     */
    String initialize(Long commodityId, Long quantity);

    /**
     * 查看秒杀商品当前信息
     *
     * @param commodityId - 商品ID
     * @return - 秒杀商品当前信息
     */
    String info(Long commodityId);

    /**
     * 商品秒杀：存在商品超卖问题
     *
     * @param commodityId - 商品ID
     * @param customerId  - 顾客ID
     * @return - 秒杀结果
     */
    Message spick1(Long commodityId, Long customerId);

    /**
     * 商品秒杀：解决商品超卖问题，但存在库存遗留问题
     *
     * @param commodityId - 商品ID
     * @param customerId  - 顾客ID
     * @return - 秒杀结果
     */
    Message spick2(Long commodityId, Long customerId);

    /**
     * 商品秒杀：使用Lua脚本解决库存遗留问题
     *
     * @param commodityId - 商品ID
     * @param customerId  - 顾客ID
     * @return - 秒杀结果
     */
    Message spick3(Long commodityId, Long customerId);
}
